home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / pasprog.EXE / CMOS.PAS < prev    next >
Pascal/Delphi Source File  |  1995-11-12  |  1KB  |  58 lines

  1.  
  2. procedure write_cmos(regno:byte;newval:byte);
  3. begin
  4.   asm
  5.     pushf
  6.     cli
  7.     mov al,regno
  8.     out 70h,al
  9.     mov al,newval
  10.     out 71h,al
  11.     popf
  12.   end;
  13. end;
  14.  
  15. function read_cmos(regno:byte):byte;
  16. var
  17.   regval : byte;
  18. begin
  19.   asm
  20.     pushf
  21.     cli
  22.     mov al,regno
  23.     out 70h,al
  24.     in  al,71h
  25.     mov regval,al
  26.     popf
  27.   end;
  28.   read_cmos:=regval;
  29. end;
  30.  
  31. const
  32.   hexdigit : string[16] =('0123456789ABCDEF');
  33.  
  34. function b2h(b:integer):string;
  35. begin
  36.   if (b<0) or (b>255)
  37.     then b2h:='__'
  38.     else b2h:=hexdigit[(b shr 4)+1]+hexdigit[(b and 15)+1];
  39. end;
  40.  
  41. type
  42.   cmos_data = record
  43.               array [0..$3F] of byte;
  44.               chksum : word;
  45.               end;
  46. var
  47.   cdat : cmos_data;
  48.   r : byte;
  49. begin
  50.   for r:=$10 to $2d do
  51.     begin
  52.     t:=t+read_cmos(r);
  53.     writeln('@',b2h(r),':',b2h(read_cmos(r)));
  54.     end;
  55.   writeln('Total = ',b2h(hi(t)),b2h(lo(t)));
  56.   writeln('@2e:',b2h(read_cmos($2e)));
  57.   writeln('@2f:',b2h(read_cmos($2f)));
  58. end.